package com.itany.corejava.code08_集合.collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * @author MissChen
 * @date 2024年03月06日 10:31
 */
public class Test01_常用方法 {
    public static void main(String[] args) {
        List<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(3);
        list.add(7);
        list.add(20);
        list.add(2);
        System.out.println(list);
        // addAll(Collection c,T... t) 将所有指定的元素t添加到指定集合c中
        Collections.addAll(list,23,67,98,56,1);
        System.out.println(list);

        // max(Collection c) 获取指定集合中元素的最大值。数字型按照数值大小,字符串按照字典顺序
        System.out.println(Collections.max(list));

        // min(Collection c) 获取指定集合中元素的最小值。数字型按照数值大小,字符串按照字典顺序
        System.out.println(Collections.min(list));

        List<String> names=new ArrayList<>();
        //如果是字符串，按照字典顺序进行排序
        Collections.addAll(names,"a","coco","alice","tom","lucy");
        System.out.println(Collections.max(names));
        System.out.println(Collections.min(names));

        // sort(List list) 升序排序。数值型按照数值大小, 字符串按照字典顺序进行排序
        Collections.sort(list);//升序
        System.out.println(list);
        Collections.sort(names);//升序
        System.out.println(names);

        // sort(List list,Comparator c) 根据自定义比较器定义排序规则
        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                if(o1>o2){
                    return -1;
                }else if(o1<o2){
                    return 1;
                }
                return 0;
            }
        });
        System.out.println(list);

        //想要按照名字的长度从长到短来
        Collections.sort(names, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if(o1.length()>o2.length()){
                    return -1;
                }else if(o1.length()<o2.length()){
                    return 1;
                }
                return 0;
            }
        });
        System.out.println(names);

        //reverse()反转
        // reverse(List list) 集合反转,将集合中的元素颠倒过来
        Collections.reverse(list);
        System.out.println(list);
        System.out.println("===================");

        // replaceAll(List list, T old,T new) 使用新的元素new替换指定集合中所有的old元素
        Collections.replaceAll(list,1,100);
        System.out.println(list);


        // swap(List list, int i, int j) 将指定索引位置i与j的元素值进行交换
        Collections.swap(list,4,8);
        System.out.println(list);

        // fill(List,T t) 使用指定元素t替换集合中所有的元素
        Collections.fill(list,1000);
        System.out.println(list);
    }
}
